home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / dev / cross / Avr.lha / Atmel / Asm / examples / DTMF.ASM next >
Assembly Source File  |  1999-06-12  |  2KB  |  96 lines

  1.  
  2.  .include "io2313.inc"
  3.  
  4.  ldi R16,$0F
  5.  out DDRB,R16
  6.  
  7.  clr R17      ;Timer counter for tone A
  8.  clr R18      ;Timer counter for tone B
  9.  
  10.  ldi R30,LOW(TONETABLE*2)
  11.  ldi R31,HIGH(TONETABLE*2)
  12.  
  13.  adiw R30,5          ;Add in offset
  14.  
  15.  lpm             ;Get tones from table
  16.  mov R19,R0
  17.  ld R1,Z+
  18.  lpm
  19.  mov R20,R0
  20.  
  21. loop:
  22.  inc R17         ;125ns    This loop should take 6us
  23.  inc R18         ;125ns
  24.  
  25.  clr R22         ;125ns
  26.  
  27.  cp R17,R19      ;125ns
  28.  brne nota       ;125/250 ns
  29.  clr R17        ;Do tone A  ;125 ns
  30.  ori R22,$08
  31.  
  32. nota:
  33.  cp R18,R20       ;125ns
  34.  brne notb        ;125/250ns
  35.  clr R18        ; 125ns   Do tone B
  36.  ori R22,$04
  37.  
  38. notb:
  39.  
  40.  in R21,PORTB    ;125
  41.  eor R21,R22     ;125
  42.  out PORTB,R21   ;  125 Toggle the pin
  43.  
  44.  ldi R21,11      ;125 waste 4.1us
  45. dlay:
  46.  dec R21    ;125ns \
  47.  brne dlay  ;250ns   \375ns
  48.       
  49.  rjmp loop      ;250 ns
  50.  
  51.  ;DTMF values:-
  52.  ; 1   - 700/900
  53.  ; 2   - 700/1100
  54.  ; 3   - 900/1100
  55.  ; 4   - 700/1300
  56.  ; 5   - 900/1300
  57.  ; 6   - 1100/1300
  58.  ; 7   - 700/1500
  59.  ; 8   - 900/1500
  60.  ; 9   - 1100/1500
  61.  ; 0   - 1300/1500
  62.  ; KP1 - 1100/1700
  63.  ; KP2 - 1300/1700
  64.  ; ST  - 1500/1700
  65.  ; CLL - 700/1700
  66.  ; CLH - 2400/2600
  67.  ; SZ  - 2400/2400
  68.  ; Periodic times:-
  69.  ; 700  - 1428us  119
  70.  ; 900  - 1111us  93
  71.  ; 1100 - 909us   76
  72.  ; 1300 - 769us   64
  73.  ; 1500 - 667us   56
  74.  ; 1700 - 588us   49
  75.  ; 2400 - 417us   35
  76.  ; 2600 - 385us   32
  77.  
  78. TONETABLE:
  79.  .db 119,93     ;1
  80.  .db 119,76     ;2
  81.  .db 93,76      ;3
  82.  .db 119,64     ;4
  83.  .db 93,64      ;5
  84.  .db 76,64      ;6
  85.  .db 119,56     ;7
  86.  .db 93,56      ;8
  87.  .db 76,56      ;9
  88.  .db 64,56      ;0 (10)
  89.  .db 76,49      ;KP1 (11)
  90.  .db 64,49      ;KP2 (12)
  91.  .db 56,49      ;ST  (13)
  92.  .db 119,49     ;C11 (14)
  93.  .db 35,32      ;CLH (15)
  94.  .db 35,35      ;SZ  (16)
  95.  
  96.